package com.zxy.pojo.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import java.util.Date;
import java.util.List;

/**
 * 用户实体类
 */
@Data
@TableName("sys_user")
public class SysUser {
    /** 用户ID */
    @TableId(type = IdType.AUTO) // 自增主键
    private Long userId;

    /** 登录用户名 */
    private String userName;

    /** 用户昵称 */
    private String nickName;

    /** 部门ID */
    private Long deptId;

    /** 部门名称（冗余字段） */
    private String deptName;

    /** 邮箱 */
    private String email;

    /** 手机号 */
    private String phonenumber;

    /** 性别（0=男，1=女，2=未知） */
    private String sex;

    /** 头像路径 */
    private String avatar;

    /** 密码盐值 */
    private String salt;

    /** 登录密码 */
    private String password;

    /** 状态（0=正常，1=禁用） */
    private String status;

    /** 删除标志（0=未删除，1=已删除） */
    @TableLogic
    private String delFlag;

    /** 最后登录IP */
    private String loginIp;

    /** 最后登录时间 */
    private Date loginDate;

    /** 创建人 */
    private String createBy;

    /** 创建时间 */
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /** 更新人 */
    private String updateBy;

    /** 更新时间 */
    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;

    /** 是否为管理员（0=否，1=是） */
    private Integer admin;

    // 前端所需关联字段
    /** 部门信息（前端dept对象） */
    @TableField(exist = false)
    private SysDept dept;

    /** 用户关联角色列表（前端roles，暂为空） */
    @TableField(exist = false)
    private List<SysRole> roles;

    /** 用户关联角色ID集合（前端roleIds，暂为null） */
    @TableField(exist = false)
    private List<Long> roleIds;

    // 格式化登录时间（适配前端 "2021-03-31T03:12:10.000+0800" 格式）
    public String getLoginDateStr() {
        if (loginDate == null) {
            return null;
        }
        // SimpleDateFormat 线程不安全，建议使用 DateTimeFormatter（JDK8+）
        return new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS+0800")
                .format(loginDate);
    }

}